wayland: Improve EOF detection when reading selections
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 7 Feb 2018 17:30:18 +0000 (18:30 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 8 Feb 2018 15:29:18 +0000 (16:29 +0100)
g_input_stream_read_bytes() roughly provides the same guarantees
than g_input_stream_read() wrt the number of bytes being possibly
read (i.e. it being a best effort, but no real guarantees).

Instead, rely on the 0-len read that we'd get at the end of the
transfer.

Fixes clipboard/DnD transfers possibly being cut short, resulting
on "Broken pipe" errors on the other side.

https://gitlab.gnome.org/GNOME/gtk/issues/1

Closes: #1
gdk/wayland/gdkselection-wayland.c

index 008778292a221db8a45cedc17d83bd551d57ef7e..12737d672e361fbca9bf68f063cc7e1301803b5e 100644 (file)
@@ -245,7 +245,7 @@ selection_buffer_read_cb (GObject      *object,
 
   if (bytes)
     {
-      finished = g_bytes_get_size (bytes) < get_buffer_size ();
+      finished = g_bytes_get_size (bytes) == 0;
       selection_buffer_append_data (buffer,
                                     g_bytes_get_data (bytes, NULL),
                                     g_bytes_get_size (bytes));